gl renderer: Draw offscreen nodes in device pixels
authorTimm Bäder <mail@baedert.org>
Thu, 15 Mar 2018 12:52:07 +0000 (13:52 +0100)
committerTimm Bäder <mail@baedert.org>
Thu, 15 Mar 2018 12:52:07 +0000 (13:52 +0100)
We need to draw them upscaled, of course. This fixes button hover (or,
more generally, crossfade nodes) in hidpi setups.

gsk/gl/gskglrenderer.c

index b67f6cdeb4c1cc66e3574c7126dd78c41d0a7584..7afc34879c8a38e6d81a63505d0ce73064390b21 100644 (file)
@@ -2269,11 +2269,12 @@ add_offscreen_ops (GskGLRenderer   *self,
   render_target = gsk_gl_driver_create_render_target (self->gl_driver, *texture_id, TRUE, TRUE);
 
   graphene_matrix_init_ortho (&item_proj,
-                              min_x, max_x,
-                              min_y, max_y,
+                              min_x * self->scale_factor, max_x * self->scale_factor,
+                              min_y * self->scale_factor, max_y * self->scale_factor,
                               ORTHO_NEAR_PLANE, ORTHO_FAR_PLANE);
   graphene_matrix_scale (&item_proj, 1, -1, 1);
   graphene_matrix_init_identity (&identity);
+  graphene_matrix_scale (&identity, self->scale_factor, self->scale_factor, 1);
 
   prev_render_target = ops_set_render_target (builder, render_target);
   /* Clear since we use this rendertarget for the first time */
@@ -2286,7 +2287,9 @@ add_offscreen_ops (GskGLRenderer   *self,
                                                                   width, height));
   if (reset_clip)
     prev_clip = ops_set_clip (builder,
-                              &GSK_ROUNDED_RECT_INIT (min_x * self->scale_factor, min_y * self->scale_factor, width, height));
+                              &GSK_ROUNDED_RECT_INIT (min_x * self->scale_factor,
+                                                      min_y * self->scale_factor,
+                                                      width, height));
 
   gsk_gl_renderer_add_render_ops (self, child_node, builder);